Emulation systems may comprise hardware components, such as emulation chips and processors, capable of performing processor-based (e.g., hardware-based) emulation of logic systems, such as integrated circuits (ICs), application specific integrated circuits (ASICs), central processing units (CPUs), graphics processing units (GPU), field-programmable gate arrays (FPGAs), and the like. By executing various forms of programmable logic, the emulation chips may be programmed to mimic the functionality of nearly any prototype logic system-design that is undergoing testing, sometimes called the “design under test” (DUT). Processor-based emulation allows logic system designers to prototype a logic system's design using reprogrammable computing hardware, before a manufacturer expends resources manufacturing a logic system product based on the design.
In processor-based emulations systems there are a number of basic computing processing resources needed; and there are number of resources that may be emulated. Generally, these resources, which could be employed and/or emulated by the processor-based emulation system, are circuits, and they may include various types of logic gates, such as registers, Boolean logic gates, memories, and the like. These gates are frequently used or emulated by emulation systems. As such, there have been a number of technological advances aimed at improving conventional emulation systems' use or emulation of these types of circuits. However, not every type of logic gate and circuit is well-addressed in conventional emulation systems. There are some types of gates where conventional emulation systems inefficiently emulate or are otherwise unable employ.
Some examples of logic gate circuits that may have not been well-serviced include content addressable memory and ternary content addressable memory (CAM/TCAM). These types of gates combine the ability to read and write, like a standard memory, but include the ability to search the contents. They are used in a number of fields, especially in networking hardware, such as routers, switches, firewalls, and the like. For example, CAM and TCAM memories are frequently used to store routing tables or MAC address lookup tables, because these memories are so quickly queried to determine how IP packets should be routed. The designers of the underlying circuitry for these types of networking devices would therefore appreciate an emulation system that provides improved capabilities to emulate, and thus more efficiently and accurately test, the logic gates and circuits of their CAM/TCAM circuit designs.
In conventional emulation systems, CAM/TCAM emulation is ordinarily accomplished using the standard resources—typically the processors and processor clusters. This involves creating the emulated output logic, using processors to act as improvised registers and to provide the comparison logic that is integral to CAM/TCAM functionality. But conventional emulation systems require a relatively large number of processors in order to emulate even the smallest CAM/TCAM. So even though it is possible for conventional emulation systems to emulate the functionality of CAM/TCAM logic circuits, it is also very expensive in terms of emulation resource capacity, demand, and availability. For example, a conventional emulation system with a CAM memory 32-bits-wide and 8-words-deep (32×8), the emulation system would need 32×8 (256) processors to store the CAM bits, plus another 32 processors to store a comparison value, and another 88 processors (8×(8+2+1)) to perform the emulation of the comparison logic. This would require about 376 processors. There would also be even more processors required to handle reading and writing of the CAM. This cost of about 1.5 processors per CAM-bit is very high.
What is needed is an efficient and low-cost means for recreating a CAM/TCAM memory and its functionality in a processor-based emulation system. Because processors perform the emulations in a processor-based emulation system, and the processors are generally inefficient, what is needed is an alternative means for recreating the CAM/TCAM memory and its functionality without using processors.